package cn.mall.order.utils;

import org.springframework.stereotype.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * 微博数据缓存服务
 * 提供微博数据的缓存功能，减少重复请求
 */
@Component
public class WeiboDataCacheUtils {
    
    private static final Logger logger = LoggerFactory.getLogger(WeiboDataCacheUtils.class);
    
    // 简单内存缓存，实际应用中应改为Redis
    private final Map<String, Object> localCache = new HashMap<>();
    
    /**
     * 获取缓存的关注数据
     * 
     * @param url 微博URL
     * @return 关注数，不存在返回null
     */
    public Integer getCachedFollowData(String url) {
        String cacheKey = "follow:" + url;
        logger.debug("尝试从缓存获取关注数据: {}", cacheKey);
        return (Integer) localCache.get(cacheKey);
    }
    
    /**
     * 缓存关注数据
     * 
     * @param url 微博URL
     * @param data 关注数据
     */
    public void cacheFollowData(String url, Integer data) {
        String cacheKey = "follow:" + url;
        localCache.put(cacheKey, data);
        logger.debug("缓存关注数据: {}, 值: {}", cacheKey, data);
    }
    
    /**
     * 获取缓存的视频数据
     * 
     * @param url 微博URL
     * @return 视频播放数，不存在返回null
     */
    public Integer getCachedVideoData(String url) {
        String cacheKey = "video:" + url;
        return (Integer) localCache.get(cacheKey);
    }
    
    /**
     * 缓存视频数据
     * 
     * @param url 微博URL
     * @param data 视频播放数
     */
    public void cacheVideoData(String url, Integer data) {
        String cacheKey = "video:" + url;
        localCache.put(cacheKey, data);
    }
    
    /**
     * 获取缓存的评论点赞数据
     * 
     * @param taskId 评论任务ID
     * @return 评论点赞数，不存在返回null
     */
    public Integer getCachedCommentGoodData(String taskId) {
        String cacheKey = "comment_good:" + taskId;
        return (Integer) localCache.get(cacheKey);
    }
    
    /**
     * 缓存评论点赞数据
     * 
     * @param taskId 评论任务ID
     * @param data 评论点赞数
     */
    public void cacheCommentGoodData(String taskId, Integer data) {
        String cacheKey = "comment_good:" + taskId;
        localCache.put(cacheKey, data);
    }
    
    /**
     * 获取缓存的基础数据(转发、评论、点赞)
     * 
     * @param url 微博URL
     * @return 包含[转发数,评论数,点赞数]的列表，不存在返回null
     */
    public ArrayList<Integer> getCachedBaseData(String url) {
        String cacheKey = "base:" + url;
        return (ArrayList<Integer>) localCache.get(cacheKey);
    }
    
    /**
     * 缓存基础数据
     * 
     * @param url 微博URL
     * @param data 包含[转发数,评论数,点赞数]的列表
     */
    public void cacheBaseData(String url, ArrayList<Integer> data) {
        String cacheKey = "base:" + url;
        localCache.put(cacheKey, data);
    }
} 